JSON/XML Response এবং HTTP Methods (GET, POST, PUT, DELETE)

Java Technologies - স্প্রিং (Spring) Spring RESTful Web Services |
162
162

Spring Framework ওয়েব অ্যাপ্লিকেশন ডেভেলপমেন্টে ব্যাপকভাবে ব্যবহৃত হয় এবং HTTP মেথড (GET, POST, PUT, DELETE) এর সাথে কাজ করার জন্য এটি শক্তিশালী ফিচার সরবরাহ করে। Spring Web MVC একটি অবিচ্ছেদ্য অংশ এবং এটি JSON এবং XML রেসপন্স হ্যান্ডল করার জন্য সুবিধা প্রদান করে। Web services এবং RESTful APIs তৈরি করার ক্ষেত্রে এই ফিচারগুলি বিশেষভাবে গুরুত্বপূর্ণ। এই টিউটোরিয়ালে আমরা HTTP Methods (GET, POST, PUT, DELETE) এবং JSON/XML রেসপন্স নিয়ে আলোচনা করব।


1. HTTP Methods (GET, POST, PUT, DELETE)

HTTP (HyperText Transfer Protocol) মেথডগুলি হল ওয়েব সার্ভারের সাথে ক্লায়েন্ট (যেমন ব্রাউজার বা অ্যাপ্লিকেশন) এর মধ্যে যোগাযোগের জন্য ব্যবহৃত পদ্ধতি। Spring Web MVC-এ এই HTTP মেথডগুলি ব্যবহার করা হয় RESTful APIs তৈরি করতে। প্রধান HTTP মেথডগুলি হল:

  1. GET: ডেটা রিড করার জন্য ব্যবহৃত হয়।
  2. POST: নতুন ডেটা তৈরি করার জন্য ব্যবহৃত হয়।
  3. PUT: বিদ্যমান ডেটা আপডেট করার জন্য ব্যবহৃত হয়।
  4. DELETE: ডেটা মুছে ফেলার জন্য ব্যবহৃত হয়।

Spring Web MVC এ এই HTTP মেথডগুলির জন্য মডেল এবং কন্ট্রোলার মেথড তৈরি করা হয় যা HTTP রিকোয়েস্ট অনুযায়ী কাজ করে।


2. GET Method

GET মেথড HTTP রিকোয়েস্টে ডেটা রিড করতে ব্যবহৃত হয়। এটি সাধারণত ডেটা রিট্রিভ (retrieve) করার জন্য ব্যবহার করা হয়, এবং সার্ভারে কোনো পরিবর্তন (state) করে না।

উদাহরণ: GET Method

package com.example.controller;

import com.example.model.Employee;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class EmployeeController {

    // GET request to fetch employee data by ID
    @GetMapping("/employees/{id}")
    public Employee getEmployee(@PathVariable Long id) {
        // Example: Fetch employee by ID from database or repository
        return new Employee(id, "John Doe", "Developer");
    }
}

এখানে, @GetMapping অ্যানোটেশন GET রিকোয়েস্ট হ্যান্ডল করার জন্য ব্যবহৃত হয়েছে এবং @PathVariable এর মাধ্যমে URL থেকে প্যারামিটার (id) আনা হচ্ছে।


3. POST Method

POST মেথড নতুন ডেটা তৈরি (create) করার জন্য ব্যবহৃত হয়। এটি সাধারণত ফর্ম ডেটা বা JSON/XML রিকোয়েস্ট বডি পাঠানোর জন্য ব্যবহার করা হয়।

উদাহরণ: POST Method

package com.example.controller;

import com.example.model.Employee;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class EmployeeController {

    // POST request to add a new employee
    @PostMapping("/employees")
    public String addEmployee(@RequestBody Employee employee) {
        // Example: Add employee to database or repository
        return "Employee added: " + employee.getName();
    }
}

এখানে, @PostMapping অ্যানোটেশন POST রিকোয়েস্ট হ্যান্ডল করার জন্য ব্যবহৃত হয়েছে এবং @RequestBody এর মাধ্যমে JSON বা XML রিকোয়েস্ট বডি ডেসিরিয়ালাইজ (deserialize) করা হচ্ছে।


4. PUT Method

PUT মেথড বিদ্যমান ডেটা আপডেট (update) করার জন্য ব্যবহৃত হয়। এটি সাধারনত ডেটার সম্পূর্ণ পরিবর্তন করার জন্য ব্যবহার করা হয়।

উদাহরণ: PUT Method

package com.example.controller;

import com.example.model.Employee;
import org.springframework.web.bind.annotation.PutMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class EmployeeController {

    // PUT request to update an existing employee
    @PutMapping("/employees/{id}")
    public String updateEmployee(@PathVariable Long id, @RequestBody Employee employee) {
        // Example: Update employee in database or repository
        return "Employee updated: " + employee.getName();
    }
}

এখানে, @PutMapping অ্যানোটেশন PUT রিকোয়েস্ট হ্যান্ডল করার জন্য ব্যবহৃত হয়েছে এবং @RequestBody এর মাধ্যমে আপডেট ডেটা (JSON/XML) গ্রহণ করা হচ্ছে।


5. DELETE Method

DELETE মেথড একটি রিসোর্স মুছে ফেলতে (delete) ব্যবহৃত হয়। এটি সাধারণত ডেটাবেস থেকে কোনো ডেটা মুছে ফেলার জন্য ব্যবহার করা হয়।

উদাহরণ: DELETE Method

package com.example.controller;

import org.springframework.web.bind.annotation.DeleteMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class EmployeeController {

    // DELETE request to delete employee by ID
    @DeleteMapping("/employees/{id}")
    public String deleteEmployee(@PathVariable Long id) {
        // Example: Delete employee from database or repository
        return "Employee deleted with id: " + id;
    }
}

এখানে, @DeleteMapping অ্যানোটেশন DELETE রিকোয়েস্ট হ্যান্ডল করার জন্য ব্যবহৃত হয়েছে এবং @PathVariable এর মাধ্যমে URL থেকে id প্যারামিটার নেওয়া হচ্ছে।


6. JSON/XML Response

Spring Web MVC অ্যাপ্লিকেশন JSON এবং XML ফরম্যাটে রেসপন্স পাঠাতে সক্ষম। Spring Boot এর মাধ্যমে রেসপন্স কনভার্সন সহজ হয়, কারণ Spring Boot অটোমেটিকভাবে Jackson (JSON) অথবা JAXB (XML) লাইব্রেরি ব্যবহারের মাধ্যমে ডেটা সিরিয়ালাইজ এবং ডেসিরিয়ালাইজ করে।

JSON Response Example

Spring Framework বা Spring Boot এর মাধ্যমে একটি ক্লাস থেকে JSON রেসপন্স পাঠানো সহজ।

package com.example.model;

public class Employee {

    private Long id;
    private String name;
    private String position;

    // Constructor, Getters, Setters

    public Employee(Long id, String name, String position) {
        this.id = id;
        this.name = name;
        this.position = position;
    }

    public Long getId() {
        return id;
    }

    public String getName() {
        return name;
    }

    public String getPosition() {
        return position;
    }
}

এখন, Spring RestController থেকে JSON রেসপন্স পাওয়া যাবে। যখন GET রিকোয়েস্ট করা হবে, তখন Employee অবজেক্ট JSON আউটপুট হিসেবে রিটার্ন হবে।

JSON Response Example:

{
  "id": 1,
  "name": "John Doe",
  "position": "Developer"
}

XML Response Example

Spring Boot XML রেসপন্সও সমর্থন করে, কিন্তু XML রেসপন্সের জন্য আপনি Jackson XML বা JAXB লাইব্রেরি ব্যবহার করতে হবে।

<Employee>
    <id>1</id>
    <name>John Doe</name>
    <position>Developer</position>
</Employee>

7. Content-Type and Accept Headers

  • Content-Type Header: এটি ক্লায়েন্টকে জানায় যে সার্ভার রিকোয়েস্ট বডিতে কিসের ডেটা পাঠাচ্ছে (যেমন: application/json, application/xml)।
  • Accept Header: এটি সার্ভারকে জানায় যে ক্লায়েন্ট কোন ফরম্যাটে রেসপন্স চাচ্ছে (যেমন: application/json, application/xml)।

Spring MVC অটোমেটিকভাবে এই হেডারগুলি অনুযায়ী রেসপন্স কনভার্সন করে, যা ডেভেলপারদের জন্য সুবিধাজনক।

উদাহরণ: Controller Method with Headers

@GetMapping("/employees/{id}")
public ResponseEntity<Employee> getEmployee(@PathVariable Long id) {
    Employee employee = new Employee(id, "John Doe", "Developer");
    return ResponseEntity.ok()
                         .header(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON_VALUE)
                         .body(employee);
}

এখানে, ResponseEntity ব্যবহার করা হয়েছে যাতে কাস্টম Content-Type হেডার সেট করা যায়।


সারাংশ

Spring Web MVC এবং Spring Boot ব্যবহার করে আপনি HTTP মেথড (GET, POST, PUT, DELETE) এর মাধ্যমে ডেটা পরিচালনা করতে পারেন এবং JSON বা XML রেসপন্স প্রদান করতে পারেন। Spring Framework JSON এবং XML রেসপন্স হ্যান্ডল করার জন্য Jackson এবং JAXB লাইব্রেরি ব্যবহার করে এবং @RestController, @GetMapping, @PostMapping, @PutMapping, @DeleteMapping অ্যানোটেশন ব্যবহার করে HTTP মেথডগুলো সহজভাবে ম্যানেজ করতে পারেন। Spring Boot অটোকনফিগারেশন এবং সহজ কনফিগারেশন ব্যবস্থার মাধ্যমে এই কার্যাবলী আরও সহজ করে তোলে।

Content added By
Promotion